// const { ethers } = require("hardhat");

async function main() {
    // 获取钱包列表，假设第一个钱包是发送者
    // const [sender, recipient] = await ethers.getSigners();

    // 提供具体的发送者私钥
    const senderPrivateKey = "035a2cba54dbc6404cd2b9262aabcdc12e338f1387045452672834b34ca8e246";
    
    // 创建一个签名器实例
    const sender = new ethers.Wallet(senderPrivateKey, ethers.provider); 

    // 提供接收者的地址
    const recipientAddress = "0x5aFA7e7E6844740c73ea9B0fEa413f49d1149481";

    // 查询目的地址账户余额
    const preBalance = await ethers.provider.getBalance(recipientAddress);
    // console.log("preBalance:", ethers.utils.formatEther(preBalance), "IMC"); // ethers v5版本
    console.log("preBalance:", ethers.formatEther(preBalance)); // ethers v6版本

    // 转账金额（以 wei 为单位）
    // const amount = ethers.utils.parseEther("20") // ethers v5版本
    const amount = ethers.parseEther("0.16") // ethers v6版本

    // 手动设置交易的 nonce 值
    //   const nonce = await sender.getNonce()
    const nonce = await sender.provider.getTransactionCount(sender.address);
    console.log("Current nonce:", nonce);

    // 发送交易
    console.log(`Transferring ${amount} token from ${sender.address} to ${recipientAddress}`);
    const tx = await sender.sendTransaction({
      to: recipientAddress,
      nonce: nonce,
      value: amount
    });

    // 等待交易被矿工确认
    console.log("Waiting for transaction to be confirmed...");
    await tx.wait();

    // 输出交易详情
    console.log(`Transaction confirmed: https://token.io/tx/${tx.hash}`);

    // 查询目的地址账户余额
    const afterBalance = await ethers.provider.getBalance(recipientAddress);
    // console.log("afterBalance:", ethers.utils.formatEther(afterBalance), "IMC"); // ethers v5版本
    console.log("afterBalance:", ethers.formatEther(afterBalance)); // ethers v6版本
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });
